//这个文件是专门用来创建axios实例，做拦截器的，如果用户输入信息不正确，来做一些提醒
import NProgress from 'nprogress'//引进度条
import 'nprogress/nprogress.css'//从nodemodules的nprogress第三方包中引进度条样式,同时需要在webpack配置文件中配置css的loader（加载器）
import axios from 'axios'
// 创建一个axios实例
const request = axios.create({
    baseURL:'/api1',
    timeout:10000
})

// 添加请求拦截器
request.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    //添加请求进度条,进度条在使用时会被adminLTE中的导航栏遮挡，所以要把adminLTE样式中的z-index降低一点
    NProgress.start()
    //权限控制，当发送ajax请求时，在本地存储中拿到token，并放在请求头中，随着请求发送
    const token =localStorage.getItem('user_token')
    config.headers.token = token;
    return config;
  }, function (error) {
    // 对请求错误做些什么
    NProgress.done()
    return Promise.reject(error);
  });

// 添加响应拦截器
request.interceptors.response.use(function (response) {//response是request这个axios实例返回的promise实例的值，也就是await拿到的返回值，这个返回值是一个对象，对象里有配置信息，后端传的数据等
    // 对响应数据做点什么
    NProgress.done()
    if(response.data.code!=10000){//不是添加成功的数据，就返回数据的提示信息
        return Promise.reject({//拦截器中返回什么，前端的axios请求中await就返回什么，这里做判断如果不是10000，就返回失败的promise，这样await就会返回失败的promise，这样axios请求就会进到catch中处理异常，处理失败的catch语句中接收的e就是这里返回的值，因为在catch中的处理是alert(e.message),所以我们这里返回的值，也要是一个对象，并且有一个名为message的属性
            message:response.data.msg
        })
    }
    return response.data.data

    
  }, function (error) {
    // 对响应错误做点什么
    NProgress.done()
    return Promise.reject(error);
  });
export default request